package com.atguigu.java.ai.langchain4j.config;


import dev.langchain4j.data.segment.TextSegment;
import dev.langchain4j.model.embedding.EmbeddingModel;
import dev.langchain4j.store.embedding.EmbeddingStore;
import dev.langchain4j.store.embedding.pinecone.PineconeEmbeddingStore;
import dev.langchain4j.store.embedding.pinecone.PineconeServerlessIndexConfig;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;

/**
 * @Author: LZY
 * @Date: 2025/09/04 16:53
 * @Description:
 **/
@Configuration
public class EmbeddingStoreConfig {

    @Autowired
    private EmbeddingModel embeddingModel;

    //使用Pinecone作为向量数据库。
    @Bean
    public EmbeddingStore<TextSegment> embeddingStore() {
        //构建向量数据库
        PineconeEmbeddingStore embeddingStore = PineconeEmbeddingStore.builder()
                .apiKey("pcsk_3e1rjB_HNGeQkY5JrX54UGcEKpYPdKDVHheafGYKK9DS12sauSSsJ2Z29PhuAemRfh6qYJ")
                .index("2301a") //索引名
                .nameSpace("xiaozhi-namespace") //命名空间
                .createIndex(PineconeServerlessIndexConfig.builder() //创建索引!!!!（如果索引没有）
                        .cloud("AWS") //指定索引部署在 AWS 云服务上。
                        .region("us-east-1")  //指定索引所在的 AWS 区域为 us-east-1。
                        .dimension(embeddingModel.dimension()) //指定索引的向量维度，该维度与 embeddedModel 生成的向量维度相同。
                        .build())
                .build();

        //返回向量数据库
        return embeddingStore;
    }

}
